%% Esta funcion recibe los polos de dos filtros y un factor m entre 0 y 1.
%  Si las longitudes de los vectores de los polos son distintas y el m es
%  otro numero devuelve -1 (ERROR). Devuelve un vector p con los nuevos
%  polos (complejos).
function [p] = transition_filter (filter1, filter2,m)
%% Checkeo que filter1 y filter2 tengan misma longitud
if(length(filter1)~=length(filter2))
    p=-1;
    return
if(m>1 && m<0)
    p=-1;
    return
end
%% Ordena de menor a mayor en modulo para filtro1
filter1=sort(filter1);
%% Reordena filtro2 para que cada componente de filtro 1 tenga
% su polo mas cercano en la misma posicion (i) del filtro1
for i=1:length(filter1)
    aux=abs(filter1(i)-filter2(i));
    num=i;
    for j=i:length(filter1)
        aux2=abs(filter1(i)-filter2(j));
        if (aux2 < aux)
            aux=aux2;
            num=j;
        end
    end
    cambio=filter2(num);
    filter2(num)=filter2(i);
    filter2(i)=cambio;
end


%% Calcula los nuevos polos
for i=1:length(filter1)
    p(i)=(filter1(i)^m) * (filter2(i)^(1-m));
end